import { asyncRoutes, constantRoutes } from '../../router/index'

const state = {
  router: []
}
const mutations = {
  // 同步函数,可以接收一个 state参数,还可以接收一个data参数,也就是异步函数传过来的数据
  setRoutes(state, data) {
    //  state.router调用 state里面的数据,赋值我们合并好的静态路由和动态路由给他
    state.router = [...constantRoutes, ...data]
  }
}
const actions = {
  // 封装一个action可以通过接受当前用户的 menus 数组
// 筛选出拥有权限的页面
  filterRoutes(store, menus) {
    console.log('接收到了', menus)
    // 1. 当前用户数据
    // 2. 路由列表

    //   遍历我们的路由,进行权限对比
    const router = asyncRoutes.filter(item => menus.indexOf(item.name) !== -1)
    console.log(23, 'actions 筛选的结果', router)

    // 异步不能直接修改 state 里面的数据,要调用同步函数来修改 state的数据
    // store是我异步函数接收的参数,他可以获取到同步函数,使用 store.commit()方法调用同步函数,固定方法,第一个值是同步函数名,第二个值,是我要传过去的数据
    // 把过滤后的数据传给同步函数
    store.commit('setRoutes', router)

    // 这里 return出去了 router这个变量,在页面调用这个异步函数,就会有 router.addRoutes()路由系统
    return router
  }

}
export default {
  // 命名空间锁
  namespaced: true,

  state, mutations, actions
}
